package com.shujia.wyh.day09;


/*
    创建一个学生类并创建对象使用

    我们现在虽然实现了定义一个类，并且也成功测试赋值了。但是，我们之前在为变量起名字的时候，说过一个原则：见名之意

    this:代表所在类的对象引用
        记住：
            方法被哪个对象调用，this就代表那个对象
    什么时候使用this呢?
        局部变量隐藏成员变量
        其他用法后面和super一起讲解


    作业：定义手机类，使用封装的思想并且加上this关键字，然后测试的时候创建2个对象，并且画图（要体现出this关键字）。


 */

class Student{
    //定义成员变量
    //姓名
    private String name;
    //年龄
    private int age;

    public void setName(String name){
        //变量的定义原则：见名之意
        //我们之前说过变量的调用规则是就近原则，所以这里直接赋值是错误
//        name = name;
        //我们的本意是将传进来的值赋值给成员变量的name
//       Student.name = name;
        //上面的做法也是有问题的，目前来说，我们还没有说过类名调用成员的用法，所以即使是符合我们逻辑思维也是有问题的
        //如果Student该类的对象存在，这里应该是获取对象中的成员变量，换句话说
        //应该是将传进来的值赋值给对象中的成员变量
        //但是呢，谁可以代表当前调用该方法的那个对象呢？
        //Java提供了一个关键字给我们使用：this
        //this就代表着当前调用该方法的对象，对象都有了，对象中的成员自然也就能被获取到
        this.name = name;
    }

    public String getName(){
        return this.name;  //其实这里隐含了一个this关键字
    }

    public void setAge(int age){
//        age = age;
        this.age = age;
    }

    public int getAge(){
        return this.age;
    }
}

public class StudentDemo {
    public static void main(String[] args) {
        //根据类创建一个对象
        Student student = new Student();
        student.setName("小虎");
        System.out.println(student.getName());

        student.setAge(18);
        System.out.println(student.getAge());
    }
}
